# 创建时间:2023/2/16 23:14
# 创建人:天霄
# 计划 :SenjoTwintail
# 文件 :ParamBox.py
# 基于 Python 3.8.2
# ========================================
# 管理参数、标记
# ========================================
import pygame
from pygame.color import THECOLORS
from Api import savings


class FlagBox:
    """管理各种标记"""

    page = 'login'
    '''当前页面，切换完成后带后缀_already'''
    clicking = False
    '''鼠标是否一直在按'''
    clickable = True
    '''是否允许点击'''
    _clicked = False
    '''鼠标（左键）是否弹起'''
    _clickedRight = False
    '''鼠标右键是否弹起'''
    _clickOnce = [False, False, False, 0, 0]
    '''本轮鼠标按了一下，无论是否弹起（左中右，向上偶数、向下奇数）'''
    pressed = (False, False, False)
    '''鼠标持续按下（左中右）'''
    moving = False
    '''鼠标移动'''
    where_in = None
    '''鼠标位于哪里（None/buttonNormal/buttonLock/buttonPage/buttonReturn/kanban）'''
    touchRect: pygame.Rect
    '''鼠标手图标的Rect'''
    touchedRect: pygame.Rect
    '''鼠标点击后那一圈的Rect'''
    music_playing = False
    '''是否应该播放音乐'''
    playRightClick = False
    '''是否应该播放鼠标右键点击音效'''
    fps = savings.fps
    '''帧率'''
    tps_changed = False
    '''帧率是否改变并显示'''
    tps_changed_start = 0
    '''帧率改变起始时间'''
    fondled = False
    '''鼠标精灵是否触碰到看板娘'''
    fondled_where = None
    '''鼠标坐标位于看板娘的那个部位'''
    wasd = [False, False, False, False]
    '''wasd按键的按下并弹起标记'''
    herePageClickTo = None
    '''在当前界面点击按钮后需要到哪个界面'''
    rel = (0, 0)
    '''鼠标相对移动坐标'''

    MUSICENDEVENT = pygame.USEREVENT + 1
    '''音乐停止的事件'''
    blockEvents = [pygame.JOYHATMOTION]
    '''阻止捕获的事件集'''

    def setWASD(self, index, clicked=True):
        """设置wasd是否按下弹起

        :param index: -4~3，-10全false
        :param clicked: 是否按下并弹起
        :return:
        """
        if index == -10:
            self.wasd = [False, False, False, False]
            return
        self.wasd[index] = clicked

    @property
    def clicked(self):
        """鼠标（左键）抬起"""
        if self.clickable: return self._clicked
        return False

    @clicked.setter
    def clicked(self, value):
        if self.clickable: self._clicked = value

    @property
    def clickedRight(self):
        """鼠标右键抬起"""
        if self.clickable: return self._clickedRight
        return False

    @clickedRight.setter
    def clickedRight(self, value):
        if self.clickable: self._clickedRight = value

    @property
    def clickOnce(self):
        """鼠标左中右、上下按下一次（向上偶数、向下奇数）"""
        if self.clickable: return self._clickOnce
        return [False, False, False, 0, 0]

    @clickOnce.setter
    def clickOnce(self, value):
        if self.clickable: self._clickOnce = value


class Color:
    """颜色常量"""
    AllColors = THECOLORS
    red = 'red'

    pink = 'pink'
    gray = 'gray'


# orchid（兰花紫）
# mediumorchid（中兰花紫）
# darkorchid（暗兰花紫）
# darkviolet（暗紫罗兰色）
# blueviolet（蓝紫罗兰色）
# mediumpurple（中紫色）
# slateblue（石板蓝）
# darkslateblue（暗灰蓝）
# lavenderblush（淡紫红）
# mistyrose（浅玫瑰色）
# gainsboro（亮灰色）
# lightgray / lightgrey（浅灰色）
# darkgray / darkgrey（深灰色）
# lightslategray / lightslategrey（浅石板灰）
# slategray / slategrey（石板灰）
# dimgray / dimgrey（暗灰色）
# lightsteelblue（浅钢蓝）
# cornflowerblue（矢车菊蓝）
# dodgerblue（道奇蓝）
# deepskyblue（深天蓝）
# skyblue（天蓝色）
# lightskyblue（浅天蓝色）
# steelblue（钢蓝色）
# midnightblue（午夜蓝）
# navyblue（海军蓝）
# cornsilk（玉米丝色）
# blanchedalmond（白杏色）
# bisque（橘黄色）
# navajowhite（纳瓦白）
# wheat（浅黄色）
# burlywood（实木色）
# tan（茶色）
# rosybrown（玫瑰棕色）
# sandybrown（沙棕色）
# goldenrod（金麒麟色）
# darkgoldenrod（暗金麒麟色）
# peru（秘鲁色）
# chocolate（巧克力色）
# saddlebrown（马鞍棕色）
# darkslategray / darkslategrey（暗石板灰）
# lightslategray / lightslategrey（浅石板灰）
# gray / grey（灰色）
# darkolivegreen（暗橄榄绿）
# olive（橄榄色）
# olivedrab（橄榄褐色）
# yellowgreen（黄绿色）
# limegreen（酸橙绿）
# forestgreen（森林绿）
# seagreen（海绿色）
# darkgreen（暗绿色）
# springgreen（春绿色）
# mediumspringgreen（中春绿色）
# lawngreen（草坪绿）
# chartreuse（查特酒绿）
# mediumseagreen（中海绿色）
# greenyellow（绿黄色）
# lime（酸橙色）
# palegreen（苍绿色）
# lightgreen（浅绿色）
# darkseagreen（暗海绿色）
# aquamarine（碧绿色）
# mediumaquamarine（中碧绿色）
# paleturquoise（苍白的绿宝石）
# turquoise（绿宝石）
# mediumturquoise（中绿宝石）
# darkturquoise（暗绿宝石）
# cadetblue（军服蓝）
# powderblue（粉蓝色）
# lightblue（浅蓝色）
# royalblue（皇家蓝）
# blue（蓝色）
# mediumblue（中蓝色）
# darkblue（暗蓝色）
# navy（海军蓝）
# midnightblue（午夜蓝）